package init

import (
	"heartbeat/database"
	"heartbeat/database/model"
	"heartbeat/database/schema"
	"heartbeat/utils"
	"log"
	"strings"
)

func initAlarmConfig() bool {
	config := utils.GetConfig().Alarm
	redis := database.GetRedisClient()
	if err := redis.Set("alarm:contact", strings.Join(config.Contact, ","), 0).Err(); err != nil {
		log.Fatalln(err)
		return false
	}
	if err := redis.Set("alarm:interval", config.Interval, 0).Err(); err != nil {
		log.Fatalln(err)
		return false
	}
	return true
}

func initAdmin() bool {
	config := utils.GetConfig().Other
	userBean := new(model.UserBean)
	name := "admin"

	count, err := userBean.FindByUsername(name)
	if err != nil {
		log.Fatalln(err)
		return false
	}
	if count > 0 {
		return true
	}
	password := config["adminipassword"]
	if password == "" || len(password) < 6 {
		log.Println("默认管理员密码长度太短")
		return false
	}
	user := new(schema.User)
	user.Name = name
	user.Password = password
	_, err = userBean.Add(user)
	if err != nil {
		log.Fatalln(err)
		log.Println("初始化管理员账户失败")
		return false
	}
	log.Println("初始化管理员账户成功")
	return true
}

func InitEnv() bool {
	if err := utils.InitConfig("config.yaml"); err != nil {
		log.Fatalln("初始化配置错误，请检查配置文件")
		log.Fatalln(err)
		return false
	}
	if err := database.InitRedisClient(); err != nil {
		log.Fatalln(err)
		return false
	}
	if err := database.InitConnect(); err != nil {
		log.Fatalln(err)
		return false
	}
	return initAdmin() && initAlarmConfig()
}
